﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using E2_WEBSITE.Code.Product;

namespace E2_WEBSITE.cp.employee.manage
{
    public partial class AddProduct : System.Web.UI.Page
    {
        private ProductController productController = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            productController = new ProductController();

            if (!this.IsPostBack)
            {
                FillLoaiSanPhamDropList();
                FillNhaSanXuatDropList();
                FillNhaPhanPhoiDropList();
                FillKhuyenMaiDropList();
                dlLoaiSuDung.Items.Add("Desktop");
                dlLoaiSuDung.Items.Add("Laptop");
                dlLoaiSuDung.Items.Add("Desktop và Laptop");
            }
            txtNgayThemSanPham.Text = DateTime.Now.ToString();
        }

        private void FillLoaiSanPhamDropList()
        {
            dlLoaiSanPham.Items.Clear();
            if (productController != null)
            {
                List<LoaiSanPham> lspList = productController.GetLoaiSanPhamList();
                if (lspList != null)
                {
                    for (int i = 0; i < lspList.Count; i++)
                    {
                        dlLoaiSanPham.Items.Add(lspList[i].TenLoaiSanPham);
                    }
                }
            }
        }

        private void FillNhaSanXuatDropList()
        {
            dlNhaSanXuat.Items.Clear();
            if (productController != null)
            {
                List<NhaSanXuat> nsxList = productController.GetNhaSanXuatList();
                if (nsxList != null)
                {
                    for (int i = 0; i < nsxList.Count; i++)
                    {
                        dlNhaSanXuat.Items.Add(nsxList[i].TenNSX);
                    }
                }
            }
        }

        private void FillNhaPhanPhoiDropList()
        {
            dlNhaPhanPhoi.Items.Clear();

            if (productController != null)
            {
                List<NhaPhanPhoi> nppList = productController.GetNhaPhanPhoiList();
                if (nppList != null)
                {
                    for (int i = 0; i < nppList.Count; i++)
                    {
                        dlNhaPhanPhoi.Items.Add(nppList[i].TenNhanPhanPhoi);
                    }
                }
            }
        }

        private void FillKhuyenMaiDropList()
        {
            dlKhuyenMai.Items.Clear();

            if (productController != null)
            {
                List<KhuyenMai> kmList = productController.GetKhuyenMaiList();
                if (kmList != null)
                {
                    for (int i = 0; i < kmList.Count; i++)
                    {
                        if (kmList[i].PhanTramGiam != 0)
                            dlKhuyenMai.Items.Add(kmList[i].HinhThuc.Trim() + " " + kmList[i].PhanTramGiam.ToString() + "%");
                        else
                            dlKhuyenMai.Items.Add(kmList[i].HinhThuc.Trim());
                    }
                    dlKhuyenMai.Items.Add("Không có");
                }
            }
        }

        protected void btnThemSanPham_Click(object sender, EventArgs e)
        {
            if (txtTenSanPham.Text != "")
            {
                if (txtGia.Text != "")
                {
                    if (txtDiem.Text != "")
                    {
                        if (txtSoLuong.Text != "")
                        {
                            ProductInfo productInfo = new ProductInfo();
                           
                            switch (dlLoaiSuDung.Text)
                            {
                                case "Desktop":
                                    productInfo.LoaiLinhKien = 0;
                                    break;
                                case "Laptop":
                                    productInfo.LoaiLinhKien = 1;
                                    break;
                                case "Desktop và Laptop":
                                    productInfo.LoaiLinhKien = 2;
                                    break;
                            }
                            
                            productInfo.TenSanPham = txtTenSanPham.Text;
                            productInfo.NSX = GetNhaSanXuat(dlNhaSanXuat.Text);
                            productInfo.MoTa = txtMoTa.Text;
                            try
                            {
                                productInfo.Gia = Convert.ToInt32(txtGia.Text);
                            }
                            catch
                            {
                                WebMsgBox.Show("Giá không chính xác");
                                return;
                            }

                            if (dlKhuyenMai.Text == "Không có")
                                productInfo.Khuyen_Mai = null;
                            else
                                productInfo.Khuyen_Mai = GetKhuyenMai(dlKhuyenMai.Text);

                            productInfo.Nha_Phan_Phoi = GetNhaPhanPhoi(dlNhaPhanPhoi.Text);

                            try
                            {
                                productInfo.Diem = Convert.ToInt32(txtDiem.Text);
                            }
                            catch
                            {
                                WebMsgBox.Show("Điểm không chính xác");
                                return;
                            }

                            try
                            {
                                productInfo.SoLuongTon = Convert.ToInt32(txtSoLuong.Text);
                            }
                            catch
                            {
                                WebMsgBox.Show("Số lượng không chính xác");
                                return;
                            }

                            productInfo.NgayThemSP = Convert.ToDateTime(txtNgayThemSanPham.Text);
                            productInfo.BaoHanh = txtBaoHanh.Text;
                            productInfo.Loai_San_Pham = GetLoaiSanPham(dlLoaiSanPham.Text);

                            if (productController.InsertProduct(productInfo))
                            {
                                WebMsgBox.Show("Đã thêm sản phẩm vào cơ sở dữ liệu");
                                txtSoLuong.Text = "";
                                txtBaoHanh.Text = "";
                                txtDiem.Text = "";
                                txtMoTa.Text = "";
                                txtGia.Text = "";
                                txtTenSanPham.Text = "";
                            }
                            else
                                WebMsgBox.Show("Thất bại khi thêm sản phẩm vào cơ sở dữ liệu");
                        }
                        else
                            WebMsgBox.Show("Vui lòng nhập số lượng sản phẩm");
                    }
                    else
                        WebMsgBox.Show("Vui lòng nhập điểm sản phẩm");
                }
                else
                    WebMsgBox.Show("Vui lòng nhập giá cho sản phẩm");
            }
            else
                WebMsgBox.Show("Vui lòng nhập tên sản phẩm!");
        }

        private NhaSanXuat GetNhaSanXuat(String strTenNhaXuat)
        {
            List<NhaSanXuat> nsxList = productController.GetNhaSanXuatList();
            for (int i = 0; i < nsxList.Count; i++)
            {
                if (nsxList[i].TenNSX == strTenNhaXuat)
                    return nsxList[i];
            }
            return null;
        }

        private KhuyenMai GetKhuyenMai(String strKhuyenMai)
        {
            int length = strKhuyenMai.Length;
            int i;
            for (i = length - 1; i > 0; i--)
            {
                if (strKhuyenMai[i] == ' ')
                    break;
            }

            String strPhanTramGiam = strKhuyenMai.Substring(i + 1, length - i - 2);
            String strHinhThuc = strKhuyenMai.Substring(0, i);

            List<KhuyenMai> kmList = productController.GetKhuyenMaiList();
            for (int j = 0; j < kmList.Count; j++)
            {
                if ((kmList[j].HinhThuc.Trim() == strHinhThuc) && (kmList[j].PhanTramGiam.ToString() == strPhanTramGiam))
                {
                    return kmList[j];
                }
            }
            return null;
        }

        private NhaPhanPhoi GetNhaPhanPhoi(String strNhaPhanPhoi)
        {
            List<NhaPhanPhoi> nppList = productController.GetNhaPhanPhoiList();
            for (int i = 0; i < nppList.Count; i++)
            {
                if (nppList[i].TenNhanPhanPhoi == strNhaPhanPhoi)
                    return nppList[i];
            }
            return null;
        }

        private LoaiSanPham GetLoaiSanPham(String strLoaiSanPham)
        {
            List<LoaiSanPham> lspList = productController.GetLoaiSanPhamList();
            for (int i = 0; i < lspList.Count; i++)
            {
                if (lspList[i].TenLoaiSanPham == strLoaiSanPham)
                {
                    return lspList[i];
                }
            }
            return null;
        }

        protected void btnVeTrangTruoc_Click(object sender, EventArgs e)
        {
            Response.Redirect("ProductManage.aspx");
        }
    }
}
